package com.chen.blue.converter.system;

import com.chen.blue.domain.dto.system.DataScopeUserDeptDto;
import com.chen.blue.domain.dto.system.UserRoleDto;
import com.chen.blue.domain.dto.system.update.DataScopeUserDeptDtoEdit;
import com.chen.blue.domain.dto.system.update.UserRoleDtoEdit;
import com.chen.blue.domain.model.system.DataScopeUserDeptModel;
import com.chen.blue.domain.model.system.UserRoleModel;
import org.springframework.cglib.beans.BeanCopier;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * Created By CLT On 2024/5/11.
 */
@SuppressWarnings("all")
public abstract class DataScopeDeptUserConverter {

    private static final BeanCopier dtoToModel = BeanCopier.create(DataScopeUserDeptDto.class, DataScopeUserDeptModel.class, false);
    private static final BeanCopier dtoEditToModel = BeanCopier.create(DataScopeUserDeptDtoEdit.class, DataScopeUserDeptModel.class, false);

    /**
     * dto->model
     *
     * @param dataScopeUserDeptDto
     * @return
     */
    public static DataScopeUserDeptModel dtoToModel(DataScopeUserDeptDto dataScopeUserDeptDto) {

        if (Objects.isNull(dataScopeUserDeptDto)) {
            return null;
        }

        DataScopeUserDeptModel dataScopeUserDeptModel = new DataScopeUserDeptModel();
        dtoToModel.copy(dataScopeUserDeptDto, dataScopeUserDeptModel, null);
        return dataScopeUserDeptModel;

    }

    /**
     * dtoList->modelList
     *
     * @param dataScopeUserDeptDtoList
     * @return
     */
    public static List<DataScopeUserDeptModel> dtoListToModelList(List<DataScopeUserDeptDto> dataScopeUserDeptDtoList) {

        if (dataScopeUserDeptDtoList.size() == 0) {
            return null;
        }

        List<DataScopeUserDeptModel> dataScopeUserDeptModelList = new ArrayList<>();
        for (DataScopeUserDeptDto dataScopeUserDeptDto : dataScopeUserDeptDtoList) {
            dataScopeUserDeptModelList.add(dtoToModel(dataScopeUserDeptDto));
        }

        return dataScopeUserDeptModelList;

    }

    /**
     * editDto->model
     *
     * @param dataScopeUserDeptDtoEdit
     * @return
     */
    public static DataScopeUserDeptModel dtoEditToModel(DataScopeUserDeptDtoEdit dataScopeUserDeptDtoEdit) {

        if (Objects.isNull(dataScopeUserDeptDtoEdit)) {
            return null;
        }

        DataScopeUserDeptModel dataScopeUserDeptModel = new DataScopeUserDeptModel();
        dtoEditToModel.copy(dataScopeUserDeptDtoEdit, dataScopeUserDeptModel, null);
        return dataScopeUserDeptModel;

    }

    /**
     * editDtoList->modelList
     *
     * @param dataScopeUserDeptDtoEditList
     * @return
     */
    public static List<DataScopeUserDeptModel> editDtoListToModelList(List<DataScopeUserDeptDtoEdit> dataScopeUserDeptDtoEditList) {

        if (dataScopeUserDeptDtoEditList.size() == 0) {
            return null;
        }

        List<DataScopeUserDeptModel> dataScopeUserDeptModelList = new ArrayList<>();
        for (DataScopeUserDeptDtoEdit dataScopeUserDeptDtoEdit : dataScopeUserDeptDtoEditList) {
            dataScopeUserDeptModelList.add(dtoEditToModel(dataScopeUserDeptDtoEdit));
        }

        return dataScopeUserDeptModelList;

    }


}
